package com.jfzt.utils;

import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import lombok.extern.slf4j.Slf4j;

import java.util.List;

/**
 * @author shuaihu.zhang
 */
@Slf4j
public class JsonUtils {
	
	/**
     * JSON字符串转换成对象
     */
	public static <T> T jsonStringToObject(String jsonStr,Class<T> obj){
		try{
			 return JSONObject.parseObject(jsonStr, obj);
		}catch(Exception e){
			log.info("将JSON串{}转换成 指定对象失败:",jsonStr);
			log.info("错误详情{}",e.getMessage());
		}
		return null;
	}
	
	 /**
     * 对象转JSON    
     */
	public static <T> String objectToJson(T obj){
		try{
            return JSONObject.toJSONString(obj);
		}catch(Exception e){
			log.info("将JSON串{}转换成 指定对象失败:",obj.toString());
			log.info("错误详情{}",e.getMessage());
		}
		return "";
	}
	
	 /**
     * List<T>对象转成json
     */
	public static<T> String listToJsonString(List<T> objList){
		try{
			String json=JSONObject.toJSONString(objList);
			return json;
		}catch(Exception e){
			log.info("将JSON串{}转换成 指定对象失败:",JSONObject.toJSONString(objList));
			log.info("错误详情{}",e.getMessage());
		}
		return "";
	}
	
	 /**
     * json转换成对象列表List<T>
     */
	public static <T> List<T> jsonStringToList(String json,Class<T> obj){
		try{
			return JSONArray.parseArray(json, obj);
		}catch(Exception e){
			log.info("将JSON串{}转换成 指定对象失败:",json);
			log.info("错误详情{}",e.getMessage());
		}
		return null;
	}

	/**
	 * 将JSON串转换为JSONOBJECT
	 * @param json json
	 * @return {@link JSONObject}
	 */
	public static JSONObject stringToJsonObject(String json){
		JSONObject jsonObject = null;
        try {
            jsonObject = JSONObject.parseObject(json);
        } catch (Exception e) {
			log.info("将JSON串{}转换成 指定对象失败:",json);
			log.info("错误详情{}",e.getMessage());
        }
        return jsonObject;
	}
}
